Dogecoin uses the same public key cryptography ECC with curve secp256k1, so public key generation is the same.
When I enter a Doge private key to the input the output is still a
Bitcoin public key (Starts with 1 for example instead of D).
You are confusing addresses with public keys. The 1 or the D is just a prefix to an address, depending on the type of address, see https://en.bitcoin.it/wiki/List_of_address_prefixes
After you generate the public key, you have to do the following in order to get an address:
BASE58CHECK(<address-prefix> HASH160(<pubKey>))
Dogecoin uses different prefixes for the different types of addresses, see https://github.com/dogecoin/dogecoin/blob/master/src/chainparams.cpp (note these are for mainnet only):
base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1,30); // 0x1e
base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1,22); // 0x16
base58Prefixes[SECRET_KEY] = std::vector<unsigned char>(1,158); // 0x9e
Changing the address prefixes should yield compatible addresses.